'use strict';
const db = uniCloud.database();
const _ = db.command;

exports.main = async (event, context) => {
  const { wallpaper_id, uid } = event;
  
  try {
    // 获取用户信息
    let userId = event.uid;
    let tokenStatus = 'valid';
    
    console.log('接收到的token:', event.uniIdToken ? event.uniIdToken.substring(0, 20) + '...' : '无token');
    
    // if (event.uniIdToken) {
    //   try {
    //     const { uniID } = require('uni-id-common');
    //     const uniIDIns = uniID.createInstance({ context });
    //     const userInfo = await uniIDIns.checkToken(event.uniIdToken);
        
    //     console.log('token验证结果:', { code: userInfo.code, message: userInfo.message });
        
    //     if (userInfo.code === 0) {
    //       userId = userInfo.uid||uid;
    //       console.log('token有效，用户ID:', userId);
    //     } else {
    //       tokenStatus = 'invalid';
    //       console.log('token无效:', userInfo.message);
    //       return {
    //         code: 401,
    //         message: '用户登录已过期，请重新登录',
    //         tokenStatus: 'expired',
    //         originalCode: userInfo.code
    //       };
    //     }
    //   } catch (userError) {
    //     tokenStatus = 'error';
    //     console.error('验证用户信息失败:', userError);
    //     return {
    //       code: 401,
    //       message: '用户登录状态验证失败',
    //       tokenStatus: 'error',
    //       error: userError.message
    //     };
    //   }
    // } else {
    //   tokenStatus = 'missing';
    //   console.log('未提供token');
    //   return {
    //     code: 401,
    //     message: '用户未登录，请先登录',
    //     tokenStatus: 'missing'
    //   };
    // }
    
    // 验证壁纸ID
    if (!wallpaper_id || typeof wallpaper_id !== 'string') {
      return {
        code: 400,
        message: '壁纸ID无效'
      };
    }
    
    // 检查壁纸是否存在
    const wallpaper = await db.collection('wallpapers').doc(wallpaper_id).get();
    if (!wallpaper.data) {
      return {
        code: 404,
        message: '壁纸不存在'
      };
    }
    
    // 检查是否已经收藏
    const favoriteRecord = await db.collection('favorites')
      .where({
        user_id: userId,
        wallpaper_id: wallpaper_id
      })
      .get();
    
    // 开始事务
    // const transaction = await db.startTransaction();
    
    try {
      let is_favorite = false;
      
      if (favoriteRecord.data && favoriteRecord.data.length > 0) {
        // 已收藏，取消收藏
        await db.collection('favorites')
          .doc(favoriteRecord.data[0]._id)
          .remove();
        
        // 减少壁纸收藏数
        await db.collection('wallpapers')
          .doc(wallpaper_id)
          .update({
            data: {
              favorite_count: _.inc(-1),
              favorites: _.inc(-1)
            }
          });
        
        is_favorite = false;
      } else {
        // 未收藏，添加收藏
        await db.collection('favorites').add({
          user_id: userId,
          wallpaper_id: wallpaper_id,
          create_date: new Date()
        });
        
        // 增加壁纸收藏数
        await db.collection('wallpapers')
          .doc(wallpaper_id)
          .update({
            data: {
              favorite_count: _.inc(1),
              favorites: _.inc(1)
            }
          });
        
        is_favorite = true;
      }
      
      // 提交事务
      // await transaction.commit();
      
      return {
        code: 0,
        message: is_favorite ? '收藏成功' : '取消收藏成功',
        data: {
          is_favorite: is_favorite,
          wallpaper_id: wallpaper_id
        }
      };
    } catch (error) {
		return {
		  code: 500,
		  message: '收藏操作失败'+error.message,
		  error: error.message
		};
      // 回滚事务
      // await transaction.rollback();
      // throw error;
    }
  } catch (error) {
    console.error('收藏操作失败，请联系IT老师处理:', error);
    return {
      code: 500,
      message: '收藏操作失败'+error.message,
      error: error.message
    };
  }
};